"""
邢不行™️ 策略分享会
仓位管理框架

版权所有 ©️ 邢不行
微信: xbx6660

本代码仅供个人学习使用，未经授权不得复制、修改或用于商业用途。

Author: 邢不行
"""
import os
import numpy as np
import pandas as pd


def signal(*args):
    df = args[0]
    n = args[1]
    factor_name = args[2]
    # 计算 n 天的收盘价百分比变化
    df['MtmMean'] = df['close'].pct_change(n).ewm(span=n).mean()

    # 使用 EWMA 计算波动性，减少std的滞后性

    df['std_ewma'] = df['close'].pct_change(n).ewm(span=n).std()

    # 计算改进后的动量因子
    df[factor_name] = df['MtmMean'] * df['std_ewma']

    del df['MtmMean']
    del df['std_ewma']
    return df

